package com.sskj.base.utils;

import java.math.BigDecimal;
import java.math.RoundingMode;
import java.text.NumberFormat;

public class MathUtil {


    public static String add(double a, double b, int digits) {
        BigDecimal a1 = new BigDecimal(a);
        BigDecimal b1 = new BigDecimal(b);
        return format(a1.add(b1).doubleValue(), digits);
    }

    public static double add(double a, double b) {
        BigDecimal a1 = new BigDecimal(a);
        BigDecimal b1 = new BigDecimal(b);
        return a1.add(b1).doubleValue();
    }

    public static String add(String a, String b) {
        if (isNumeric(a) && isNumeric(b)) {
            return String.valueOf(add(Double.valueOf(a), Double.valueOf(b)));
        }
        return "0";
    }

    public static double multiply(double a ,double b){
        BigDecimal a1 = new BigDecimal(a);
        BigDecimal b1 = new BigDecimal(b);
        return a1.multiply(b1).doubleValue();
    }



    public static boolean isNumeric(String str) {
        if (str == null) {
            return false;
        }
        String reg = "^[0-9]+(.[0-9]+)?$";
        return str.matches(reg);
    }


    /**
     * 保留digit小数位,多余的直接舍去
     *
     * @param number
     * @param digit
     * @return
     */
    public static String format(Double number, int digit) {
        NumberFormat numberFormat = NumberFormat.getNumberInstance();
        numberFormat.setMinimumFractionDigits(digit);
        numberFormat.setMaximumIntegerDigits(digit);
        //不以逗号分割
        numberFormat.setGroupingUsed(false);
        numberFormat.setRoundingMode(RoundingMode.DOWN);
        return numberFormat.format(number);
    }
}
